package com.JingYan.domain.entity;

import com.JingYan.annotation.Excel;
import com.JingYan.annotation.Excel.*;
import com.JingYan.annotation.Excels;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;


import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

/**
 * 用户对象 sys_user
 *
 * @author ino
 */
@Data
public class SysUser extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** UUID */
    private String id;

    /** 用户ID */
    private Long userId;

    /** 用户账号(工号) */
    @Excel(name = "用户账号(工号)")
    private String userName;

    /** 用户昵称（姓名） */
    @Excel(name = "用户昵称", readConverterExp = "姓=名")
    private String nickName;
    private Integer roleId;

    /** 部门ID */
    @Excel(name = "部门ID")
    private Long deptId;

    /** 密码 */
    @Excel(name = "密码")
    private String password;

    /** 邮箱 */
    @Excel(name = "邮箱")
    private String email;

    /** 手机号码 */
    @Excel(name = "手机号码")
    private String phonenumber;

    /** 是否在职 */
    @Excel(name = "是否在职")
    private String isValid;

    /** 职务 */
    @Excel(name = "职务")
    private String position;

    /** 级别 */
    @Excel(name = "级别")
    private String positionLevel;

    /** 员工性质 */
    @Excel(name = "员工性质")
    private String employeeNature;

    /** 用户性别（0男 1女 2未知） */
    @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
    private String sex;

    /** 开始市场一线工作时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始市场一线工作时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date beginWorkTime;

    /** 虚拟部门ID */
    @Excel(name = "虚拟部门ID")
    private Long virtualOrgId;

    /** 帐号状态（0正常 1停用） */
    @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
    private String status;

    /** 最后登陆IP */
    @Excel(name = "最后登陆IP")
    private String loginIp;

    /** 用户类型（00系统用户） */
    @Excel(name = "用户类型", readConverterExp = "0=0系统用户")
    private String userType;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 最后登陆时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后登陆时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date loginDate;

    /** 头像地址 */
    @Excel(name = "头像地址")
    private String avatar;

    /** 所属公司 */
    @Excel(name = "所属公司")
    private String belongCompany;

    /** 职务编码 */
    @Excel(name = "职务编码")
    private String positionCode;

    /** 职务编码 */
    @Excel(name = "职务级别编码")
    private String positionLevelCode;

    /** 公司代码 */
    @Excel(name = "公司代码")
    private String companyCode;

    /** 成本中心代码 */
    @Excel(name = "成本中心代码")
    private String castCode;

    /** 成本中心名称 */
    @Excel(name = "成本中心名称")
    private String castName;

    /** 工号 */
    @Excel(name = "工号")
    private String empNo;

    /**  */
    @Excel(name = "")
    private String totalSubPoint;

    /** 部门对象 */
    @Excels({
            @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
            @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
    })


    /** 角色组 */
    private Long[] roleIds;

    /** 角色组 */
    @Excel(name = "角色组")
    private String importRoleIds;

    private String firstDeptName;//一级部门名称

    private String secondDeptName;//二级部门名称

    private String thirdDeptName;//三级部门名称

    private String fourthDeptName;//四级部门名称
    private String firstDeptCode;//一级部门代码

    private String secondDeptCode;//二级部门代码

    private String thirdDeptCode;//三级部门代码

    private String fourthDeptCode;//四级部门代码

    private String fifthDeptCode;//五级部门代码

    private String fifthDeptName;//五级部门代码

    private String sixthDeptCode;//六级部门代码

    private String sixthDeptName;//六级部门代码

    private String seventhDeptCode;//七级部门代码

    private String seventhDeptName;//七级部门代码

    private String eighthDeptCode;//八级部门代码

    private String eighthDeptName;//八级部门代码


}
